package com.dearbinge.data.dao.comment;

import com.baomidou.mybatisplus.plugins.Page;
import com.dearbinge.data.pojo.comment.MessageComment;
import com.dearbinge.data.pojo.comment.vo.CommentReplyVO;
import com.dearbinge.data.pojo.comment.vo.CommentVO;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.util.List;

/**
 * 评论的dao层
 *
 * @author wes
 * @date 2019/1/25
 */
@Mapper
public interface MessageCommentMapper {

    /**
     * 查询全部评论
     *
     * @return 全部评论
     */
    List<MessageComment> listAllComment();

    /**
     * 根据id和类型查询评论
     *
     * @param type     类型
     * @param entityId 主键id
     * @return 结果map
     */
    List<CommentReplyVO> listCommentReply(@Param("type") Integer type, @Param("entityId") String entityId);

    /**
     * 增加评论
     *
     * @param messageComment 增加评论
     * @return 结果
     */
    Integer insertMessageComment(MessageComment messageComment);

    /**
     * 根据id更新
     *
     * @param messageComment 评论
     * @return 结果
     */
    Integer updateMessageComment(MessageComment messageComment);

    /**
     * 根据id删除评论
     *
     * @param id id
     * @return 结果
     */
    Integer deleteMessageComment(Integer id);


    /**
     * 根据类型和对应的表id拿到评论
     *
     * @param type     类型
     * @param entityId 实体id
     * @param lastId   最新的id
     * @param page     分页
     * @return 评论集合
     */
    List<CommentVO> listComment(@Param("type") Integer type, @Param("entityId") String entityId, @Param("lastId") Integer lastId, Page page);


    /**
     * 根据类型和对应的表id拿到评论
     *
     * @param type     类型
     * @param entityId 实体id
     * @return 评论集合
     */
    Integer countComment(@Param("type") Integer type, @Param("entityId") String entityId);
}
